{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>23.53</td>\n",
       "      <td>25.88</td>\n",
       "      <td>24.16</td>\n",
       "      <td>23.53</td>\n",
       "      <td>95578.03</td>\n",
       "      <td>0.63</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>22.80</td>\n",
       "      <td>23.78</td>\n",
       "      <td>23.53</td>\n",
       "      <td>22.80</td>\n",
       "      <td>60985.11</td>\n",
       "      <td>0.69</td>\n",
       "      <td>3.02</td>\n",
       "      <td>1.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>22.88</td>\n",
       "      <td>23.37</td>\n",
       "      <td>22.82</td>\n",
       "      <td>22.71</td>\n",
       "      <td>52914.01</td>\n",
       "      <td>0.54</td>\n",
       "      <td>2.42</td>\n",
       "      <td>1.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>22.25</td>\n",
       "      <td>22.76</td>\n",
       "      <td>22.28</td>\n",
       "      <td>22.02</td>\n",
       "      <td>36105.01</td>\n",
       "      <td>0.36</td>\n",
       "      <td>1.64</td>\n",
       "      <td>0.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>21.49</td>\n",
       "      <td>21.99</td>\n",
       "      <td>21.92</td>\n",
       "      <td>21.48</td>\n",
       "      <td>23331.04</td>\n",
       "      <td>0.44</td>\n",
       "      <td>2.05</td>\n",
       "      <td>0.58</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             open   high  close    low    volume  price_change  p_change  \\\n",
       "2018-02-27  23.53  25.88  24.16  23.53  95578.03          0.63      2.68   \n",
       "2018-02-26  22.80  23.78  23.53  22.80  60985.11          0.69      3.02   \n",
       "2018-02-23  22.88  23.37  22.82  22.71  52914.01          0.54      2.42   \n",
       "2018-02-22  22.25  22.76  22.28  22.02  36105.01          0.36      1.64   \n",
       "2018-02-14  21.49  21.99  21.92  21.48  23331.04          0.44      2.05   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      2.39  \n",
       "2018-02-26      1.53  \n",
       "2018-02-23      1.32  \n",
       "2018-02-22      0.90  \n",
       "2018-02-14      0.58  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('./data/stock_day.csv')\n",
    "data = data.drop([\"ma5\",\"ma10\",\"ma20\",\"v_ma5\",\"v_ma10\",\"v_ma20\"], axis=1)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 算数运算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 加法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>24.53</td>\n",
       "      <td>26.88</td>\n",
       "      <td>25.16</td>\n",
       "      <td>24.53</td>\n",
       "      <td>95579.03</td>\n",
       "      <td>1.63</td>\n",
       "      <td>3.68</td>\n",
       "      <td>3.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>23.80</td>\n",
       "      <td>24.78</td>\n",
       "      <td>24.53</td>\n",
       "      <td>23.80</td>\n",
       "      <td>60986.11</td>\n",
       "      <td>1.69</td>\n",
       "      <td>4.02</td>\n",
       "      <td>2.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>23.88</td>\n",
       "      <td>24.37</td>\n",
       "      <td>23.82</td>\n",
       "      <td>23.71</td>\n",
       "      <td>52915.01</td>\n",
       "      <td>1.54</td>\n",
       "      <td>3.42</td>\n",
       "      <td>2.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>23.25</td>\n",
       "      <td>23.76</td>\n",
       "      <td>23.28</td>\n",
       "      <td>23.02</td>\n",
       "      <td>36106.01</td>\n",
       "      <td>1.36</td>\n",
       "      <td>2.64</td>\n",
       "      <td>1.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>22.49</td>\n",
       "      <td>22.99</td>\n",
       "      <td>22.92</td>\n",
       "      <td>22.48</td>\n",
       "      <td>23332.04</td>\n",
       "      <td>1.44</td>\n",
       "      <td>3.05</td>\n",
       "      <td>1.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>14.17</td>\n",
       "      <td>15.48</td>\n",
       "      <td>15.28</td>\n",
       "      <td>14.13</td>\n",
       "      <td>179832.72</td>\n",
       "      <td>2.12</td>\n",
       "      <td>9.51</td>\n",
       "      <td>7.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>13.88</td>\n",
       "      <td>14.45</td>\n",
       "      <td>14.16</td>\n",
       "      <td>13.87</td>\n",
       "      <td>93181.39</td>\n",
       "      <td>1.26</td>\n",
       "      <td>3.02</td>\n",
       "      <td>4.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>13.80</td>\n",
       "      <td>13.92</td>\n",
       "      <td>13.90</td>\n",
       "      <td>13.61</td>\n",
       "      <td>67076.44</td>\n",
       "      <td>1.20</td>\n",
       "      <td>2.57</td>\n",
       "      <td>3.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>13.52</td>\n",
       "      <td>14.06</td>\n",
       "      <td>13.70</td>\n",
       "      <td>13.52</td>\n",
       "      <td>139072.61</td>\n",
       "      <td>1.18</td>\n",
       "      <td>2.44</td>\n",
       "      <td>5.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>13.25</td>\n",
       "      <td>13.67</td>\n",
       "      <td>13.52</td>\n",
       "      <td>13.20</td>\n",
       "      <td>96292.73</td>\n",
       "      <td>1.32</td>\n",
       "      <td>3.62</td>\n",
       "      <td>4.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27  24.53  26.88  25.16  24.53   95579.03          1.63      3.68   \n",
       "2018-02-26  23.80  24.78  24.53  23.80   60986.11          1.69      4.02   \n",
       "2018-02-23  23.88  24.37  23.82  23.71   52915.01          1.54      3.42   \n",
       "2018-02-22  23.25  23.76  23.28  23.02   36106.01          1.36      2.64   \n",
       "2018-02-14  22.49  22.99  22.92  22.48   23332.04          1.44      3.05   \n",
       "...           ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06  14.17  15.48  15.28  14.13  179832.72          2.12      9.51   \n",
       "2015-03-05  13.88  14.45  14.16  13.87   93181.39          1.26      3.02   \n",
       "2015-03-04  13.80  13.92  13.90  13.61   67076.44          1.20      2.57   \n",
       "2015-03-03  13.52  14.06  13.70  13.52  139072.61          1.18      2.44   \n",
       "2015-03-02  13.25  13.67  13.52  13.20   96292.73          1.32      3.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      3.39  \n",
       "2018-02-26      2.53  \n",
       "2018-02-23      2.32  \n",
       "2018-02-22      1.90  \n",
       "2018-02-14      1.58  \n",
       "...              ...  \n",
       "2015-03-06      7.16  \n",
       "2015-03-05      4.19  \n",
       "2015-03-04      3.30  \n",
       "2015-03-03      5.76  \n",
       "2015-03-02      4.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对所有数据加一\n",
    "data.add(1)\n",
    "# 等价于data + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    24.53\n",
       "2018-02-26    23.80\n",
       "2018-02-23    23.88\n",
       "2018-02-22    23.25\n",
       "2018-02-14    22.49\n",
       "Name: open, dtype: float64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对指定列数据加一\n",
    "data['open'].add(1).head()\n",
    "# 等价于data['open'] + 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 减法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-02-27</th>\n",
       "      <td>22.53</td>\n",
       "      <td>24.88</td>\n",
       "      <td>23.16</td>\n",
       "      <td>22.53</td>\n",
       "      <td>95577.03</td>\n",
       "      <td>-0.37</td>\n",
       "      <td>1.68</td>\n",
       "      <td>1.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-26</th>\n",
       "      <td>21.80</td>\n",
       "      <td>22.78</td>\n",
       "      <td>22.53</td>\n",
       "      <td>21.80</td>\n",
       "      <td>60984.11</td>\n",
       "      <td>-0.31</td>\n",
       "      <td>2.02</td>\n",
       "      <td>0.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-23</th>\n",
       "      <td>21.88</td>\n",
       "      <td>22.37</td>\n",
       "      <td>21.82</td>\n",
       "      <td>21.71</td>\n",
       "      <td>52913.01</td>\n",
       "      <td>-0.46</td>\n",
       "      <td>1.42</td>\n",
       "      <td>0.32</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-22</th>\n",
       "      <td>21.25</td>\n",
       "      <td>21.76</td>\n",
       "      <td>21.28</td>\n",
       "      <td>21.02</td>\n",
       "      <td>36104.01</td>\n",
       "      <td>-0.64</td>\n",
       "      <td>0.64</td>\n",
       "      <td>-0.10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2018-02-14</th>\n",
       "      <td>20.49</td>\n",
       "      <td>20.99</td>\n",
       "      <td>20.92</td>\n",
       "      <td>20.48</td>\n",
       "      <td>23330.04</td>\n",
       "      <td>-0.56</td>\n",
       "      <td>1.05</td>\n",
       "      <td>-0.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-06</th>\n",
       "      <td>12.17</td>\n",
       "      <td>13.48</td>\n",
       "      <td>13.28</td>\n",
       "      <td>12.13</td>\n",
       "      <td>179830.72</td>\n",
       "      <td>0.12</td>\n",
       "      <td>7.51</td>\n",
       "      <td>5.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-05</th>\n",
       "      <td>11.88</td>\n",
       "      <td>12.45</td>\n",
       "      <td>12.16</td>\n",
       "      <td>11.87</td>\n",
       "      <td>93179.39</td>\n",
       "      <td>-0.74</td>\n",
       "      <td>1.02</td>\n",
       "      <td>2.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04</th>\n",
       "      <td>11.80</td>\n",
       "      <td>11.92</td>\n",
       "      <td>11.90</td>\n",
       "      <td>11.61</td>\n",
       "      <td>67074.44</td>\n",
       "      <td>-0.80</td>\n",
       "      <td>0.57</td>\n",
       "      <td>1.30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-03</th>\n",
       "      <td>11.52</td>\n",
       "      <td>12.06</td>\n",
       "      <td>11.70</td>\n",
       "      <td>11.52</td>\n",
       "      <td>139070.61</td>\n",
       "      <td>-0.82</td>\n",
       "      <td>0.44</td>\n",
       "      <td>3.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-02</th>\n",
       "      <td>11.25</td>\n",
       "      <td>11.67</td>\n",
       "      <td>11.52</td>\n",
       "      <td>11.20</td>\n",
       "      <td>96290.73</td>\n",
       "      <td>-0.68</td>\n",
       "      <td>1.62</td>\n",
       "      <td>2.30</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>643 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-02-27  22.53  24.88  23.16  22.53   95577.03         -0.37      1.68   \n",
       "2018-02-26  21.80  22.78  22.53  21.80   60984.11         -0.31      2.02   \n",
       "2018-02-23  21.88  22.37  21.82  21.71   52913.01         -0.46      1.42   \n",
       "2018-02-22  21.25  21.76  21.28  21.02   36104.01         -0.64      0.64   \n",
       "2018-02-14  20.49  20.99  20.92  20.48   23330.04         -0.56      1.05   \n",
       "...           ...    ...    ...    ...        ...           ...       ...   \n",
       "2015-03-06  12.17  13.48  13.28  12.13  179830.72          0.12      7.51   \n",
       "2015-03-05  11.88  12.45  12.16  11.87   93179.39         -0.74      1.02   \n",
       "2015-03-04  11.80  11.92  11.90  11.61   67074.44         -0.80      0.57   \n",
       "2015-03-03  11.52  12.06  11.70  11.52  139070.61         -0.82      0.44   \n",
       "2015-03-02  11.25  11.67  11.52  11.20   96290.73         -0.68      1.62   \n",
       "\n",
       "            turnover  \n",
       "2018-02-27      1.39  \n",
       "2018-02-26      0.53  \n",
       "2018-02-23      0.32  \n",
       "2018-02-22     -0.10  \n",
       "2018-02-14     -0.42  \n",
       "...              ...  \n",
       "2015-03-06      5.16  \n",
       "2015-03-05      2.19  \n",
       "2015-03-04      1.30  \n",
       "2015-03-03      3.76  \n",
       "2015-03-02      2.30  \n",
       "\n",
       "[643 rows x 8 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 所有数据减1,等价于直接减去1\n",
    "data.sub(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    22.53\n",
       "2018-02-26    21.80\n",
       "2018-02-23    21.88\n",
       "2018-02-22    21.25\n",
       "2018-02-14    20.49\n",
       "              ...  \n",
       "2015-03-06    12.17\n",
       "2015-03-05    11.88\n",
       "2015-03-04    11.80\n",
       "2015-03-03    11.52\n",
       "2015-03-02    11.25\n",
       "Name: open, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 指定哪一行减1\n",
    "data.open.sub(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 逻辑运算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 逻辑运算符号: <, > , &, |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    23.53\n",
       "2018-02-01    23.71\n",
       "2018-01-31    23.85\n",
       "2018-01-30    23.71\n",
       "2018-01-16    23.40\n",
       "Name: open, dtype: float64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 逻辑运算符>和&的总和应用\n",
    "data.open[(data.open > 23) & (data.open < 24)].head()  # 中好好里边的比较运算必须加上小括号"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27     True\n",
       "2018-02-26    False\n",
       "2018-02-23    False\n",
       "2018-02-22    False\n",
       "2018-02-14    False\n",
       "              ...  \n",
       "2015-03-06    False\n",
       "2015-03-05    False\n",
       "2015-03-04    False\n",
       "2015-03-03    False\n",
       "2015-03-02    False\n",
       "Name: open, Length: 643, dtype: bool"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.open > 23"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 逻辑函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2018-02-27    23.53\n",
       "2018-02-01    23.71\n",
       "2018-01-31    23.85\n",
       "2018-01-30    23.71\n",
       "2018-01-16    23.40\n",
       "Name: open, dtype: float64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# DataFrame.query('条件')\n",
    "data.query('open>23 & open<24').open.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>close</th>\n",
       "      <th>low</th>\n",
       "      <th>volume</th>\n",
       "      <th>price_change</th>\n",
       "      <th>p_change</th>\n",
       "      <th>turnover</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2018-01-05</th>\n",
       "      <td>24.0</td>\n",
       "      <td>25.40</td>\n",
       "      <td>24.51</td>\n",
       "      <td>23.70</td>\n",
       "      <td>204266.23</td>\n",
       "      <td>-0.56</td>\n",
       "      <td>-2.23</td>\n",
       "      <td>5.11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-12-18</th>\n",
       "      <td>23.0</td>\n",
       "      <td>23.49</td>\n",
       "      <td>23.13</td>\n",
       "      <td>22.83</td>\n",
       "      <td>29610.00</td>\n",
       "      <td>0.12</td>\n",
       "      <td>0.52</td>\n",
       "      <td>0.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-06-23</th>\n",
       "      <td>24.0</td>\n",
       "      <td>24.47</td>\n",
       "      <td>23.34</td>\n",
       "      <td>23.34</td>\n",
       "      <td>438271.69</td>\n",
       "      <td>-2.59</td>\n",
       "      <td>-9.99</td>\n",
       "      <td>10.97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-06-21</th>\n",
       "      <td>23.0</td>\n",
       "      <td>23.84</td>\n",
       "      <td>23.57</td>\n",
       "      <td>22.90</td>\n",
       "      <td>205097.59</td>\n",
       "      <td>-0.51</td>\n",
       "      <td>-2.12</td>\n",
       "      <td>5.13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-07-24</th>\n",
       "      <td>24.0</td>\n",
       "      <td>24.55</td>\n",
       "      <td>22.99</td>\n",
       "      <td>22.38</td>\n",
       "      <td>132799.91</td>\n",
       "      <td>-1.15</td>\n",
       "      <td>-4.76</td>\n",
       "      <td>4.55</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            open   high  close    low     volume  price_change  p_change  \\\n",
       "2018-01-05  24.0  25.40  24.51  23.70  204266.23         -0.56     -2.23   \n",
       "2017-12-18  23.0  23.49  23.13  22.83   29610.00          0.12      0.52   \n",
       "2017-06-23  24.0  24.47  23.34  23.34  438271.69         -2.59     -9.99   \n",
       "2017-06-21  23.0  23.84  23.57  22.90  205097.59         -0.51     -2.12   \n",
       "2015-07-24  24.0  24.55  22.99  22.38  132799.91         -1.15     -4.76   \n",
       "\n",
       "            turnover  \n",
       "2018-01-05      5.11  \n",
       "2017-12-18      0.74  \n",
       "2017-06-23     10.97  \n",
       "2017-06-21      5.13  \n",
       "2015-07-24      4.55  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# DataFrame.isin(values)，满足要求的是True，不满足的是False\n",
    "data[data.open.isin([23, 24])].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 统计计算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## describte"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>open</th>\n",
       "      <td>643.0</td>\n",
       "      <td>21.272706</td>\n",
       "      <td>3.930973</td>\n",
       "      <td>12.25</td>\n",
       "      <td>19.000</td>\n",
       "      <td>21.44</td>\n",
       "      <td>23.400</td>\n",
       "      <td>34.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>high</th>\n",
       "      <td>643.0</td>\n",
       "      <td>21.900513</td>\n",
       "      <td>4.077578</td>\n",
       "      <td>12.67</td>\n",
       "      <td>19.500</td>\n",
       "      <td>21.97</td>\n",
       "      <td>24.065</td>\n",
       "      <td>36.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>close</th>\n",
       "      <td>643.0</td>\n",
       "      <td>21.336267</td>\n",
       "      <td>3.942806</td>\n",
       "      <td>12.36</td>\n",
       "      <td>19.045</td>\n",
       "      <td>21.45</td>\n",
       "      <td>23.415</td>\n",
       "      <td>35.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>low</th>\n",
       "      <td>643.0</td>\n",
       "      <td>20.771835</td>\n",
       "      <td>3.791968</td>\n",
       "      <td>12.20</td>\n",
       "      <td>18.525</td>\n",
       "      <td>20.98</td>\n",
       "      <td>22.850</td>\n",
       "      <td>34.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>volume</th>\n",
       "      <td>643.0</td>\n",
       "      <td>99905.519114</td>\n",
       "      <td>73879.119354</td>\n",
       "      <td>1158.12</td>\n",
       "      <td>48533.210</td>\n",
       "      <td>83175.93</td>\n",
       "      <td>127580.055</td>\n",
       "      <td>501915.41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>price_change</th>\n",
       "      <td>643.0</td>\n",
       "      <td>0.018802</td>\n",
       "      <td>0.898476</td>\n",
       "      <td>-3.52</td>\n",
       "      <td>-0.390</td>\n",
       "      <td>0.05</td>\n",
       "      <td>0.455</td>\n",
       "      <td>3.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>p_change</th>\n",
       "      <td>643.0</td>\n",
       "      <td>0.190280</td>\n",
       "      <td>4.079698</td>\n",
       "      <td>-10.03</td>\n",
       "      <td>-1.850</td>\n",
       "      <td>0.26</td>\n",
       "      <td>2.305</td>\n",
       "      <td>10.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>turnover</th>\n",
       "      <td>643.0</td>\n",
       "      <td>2.936190</td>\n",
       "      <td>2.079375</td>\n",
       "      <td>0.04</td>\n",
       "      <td>1.360</td>\n",
       "      <td>2.50</td>\n",
       "      <td>3.915</td>\n",
       "      <td>12.56</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              count          mean           std      min        25%       50%  \\\n",
       "open          643.0     21.272706      3.930973    12.25     19.000     21.44   \n",
       "high          643.0     21.900513      4.077578    12.67     19.500     21.97   \n",
       "close         643.0     21.336267      3.942806    12.36     19.045     21.45   \n",
       "low           643.0     20.771835      3.791968    12.20     18.525     20.98   \n",
       "volume        643.0  99905.519114  73879.119354  1158.12  48533.210  83175.93   \n",
       "price_change  643.0      0.018802      0.898476    -3.52     -0.390      0.05   \n",
       "p_change      643.0      0.190280      4.079698   -10.03     -1.850      0.26   \n",
       "turnover      643.0      2.936190      2.079375     0.04      1.360      2.50   \n",
       "\n",
       "                     75%        max  \n",
       "open              23.400      34.99  \n",
       "high              24.065      36.35  \n",
       "close             23.415      35.21  \n",
       "low               22.850      34.01  \n",
       "volume        127580.055  501915.41  \n",
       "price_change       0.455       3.03  \n",
       "p_change           2.305      10.03  \n",
       "turnover           3.915      12.56  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe().T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 统计函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open                34.99\n",
       "high                36.35\n",
       "close               35.21\n",
       "low                 34.01\n",
       "volume          501915.41\n",
       "price_change         3.03\n",
       "p_change            10.03\n",
       "turnover            12.56\n",
       "dtype: float64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 最大值\n",
    "data.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open              12.25\n",
       "high              12.67\n",
       "close             12.36\n",
       "low               12.20\n",
       "volume          1158.12\n",
       "price_change      -3.52\n",
       "p_change         -10.03\n",
       "turnover           0.04\n",
       "dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 最小值\n",
    "data.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open               21.272706\n",
       "high               21.900513\n",
       "close              21.336267\n",
       "low                20.771835\n",
       "volume          99905.519114\n",
       "price_change        0.018802\n",
       "p_change            0.190280\n",
       "turnover            2.936190\n",
       "dtype: float64"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 平均值\n",
    "data.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "col1    3.0\n",
       "col2    3.5\n",
       "dtype: float64"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 中位数\n",
    "a = pd.DataFrame({'col1': [1, 2, 3, 3, 4, 5], 'col2': [1, 3, 2, 4, 5, 6]})\n",
    "a.median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open            1.545255e+01\n",
       "high            1.662665e+01\n",
       "close           1.554572e+01\n",
       "low             1.437902e+01\n",
       "volume          5.458124e+09\n",
       "price_change    8.072595e-01\n",
       "p_change        1.664394e+01\n",
       "turnover        4.323800e+00\n",
       "dtype: float64"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 方差\n",
    "data.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open                3.930973\n",
       "high                4.077578\n",
       "close               3.942806\n",
       "low                 3.791968\n",
       "volume          73879.119354\n",
       "price_change        0.898476\n",
       "p_change            4.079698\n",
       "turnover            2.079375\n",
       "dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 标准差\n",
    "data.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open            2015-06-15\n",
       "high            2015-06-10\n",
       "close           2015-06-12\n",
       "low             2015-06-12\n",
       "volume          2017-10-26\n",
       "price_change    2015-06-09\n",
       "p_change        2015-08-28\n",
       "turnover        2017-10-26\n",
       "dtype: object"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求出最大值的索引\n",
    "data.idxmax()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open            2015-03-02\n",
       "high            2015-03-02\n",
       "close           2015-09-02\n",
       "low             2015-03-02\n",
       "volume          2016-07-06\n",
       "price_change    2015-06-15\n",
       "p_change        2015-09-01\n",
       "turnover        2016-07-06\n",
       "dtype: object"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求出最小值的索引\n",
    "data.idxmin()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 累计统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02    2.62\n",
       "2015-03-03    1.44\n",
       "2015-03-04    1.57\n",
       "2015-03-05    2.02\n",
       "2015-03-06    8.51\n",
       "              ... \n",
       "2018-02-14    2.05\n",
       "2018-02-22    1.64\n",
       "2018-02-23    2.42\n",
       "2018-02-26    3.02\n",
       "2018-02-27    2.68\n",
       "Name: p_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data = data.sort_index()\n",
    "data_rise = new_data.p_change\n",
    "data_rise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2015-03-02        2.62\n",
       "2015-03-03        6.68\n",
       "2015-03-04       12.31\n",
       "2015-03-05       19.96\n",
       "2015-03-06       36.12\n",
       "                ...   \n",
       "2018-02-14    55073.45\n",
       "2018-02-22    55187.68\n",
       "2018-02-23    55304.33\n",
       "2018-02-26    55424.00\n",
       "2018-02-27    55546.35\n",
       "Name: p_change, Length: 643, dtype: float64"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_rise = data_rise.cumsum()\n",
    "data_rise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\virtual_environment\\ai\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\core.py:1235: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
      "  ax.set_xticklabels(xticklabels)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20, 8), dpi=100)\n",
    "data_rise.plot()\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 自定义运算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "open     22.74\n",
       "close    22.85\n",
       "dtype: float64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# apply(func, axis=0)\n",
    "data[['open', 'close']].apply(lambda x: x.max()-x.min(), axis=0)\n",
    "# data.open.max() - data.open.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
